package com.cj.service.impl;

import com.cj.dao.DormitoryDao; // 导入宿舍数据访问对象
import com.cj.po.Dormitory; // 导入宿舍实体类
import com.cj.po.PageInfo; // 导入分页信息类
import com.cj.service.DormitoryService; // 导入宿舍服务接口
import org.springframework.beans.factory.annotation.Autowired; // 导入自动注入注解
import org.springframework.stereotype.Service; // 导入服务注解

import java.util.List; // 导入列表类

@Service("dormitoryService") // 标明这是一个服务类，注册为Spring Bean
public class DormitoryServiceImpl implements DormitoryService { // 实现宿舍服务接口

    @Autowired // 自动注入宿舍数据访问对象
    private DormitoryDao dormitoryDao;

    // 分页查询宿舍信息
    @Override
    public PageInfo<Dormitory> findPageInfo(Integer g_id, Integer d_id, String d_dormbuilding,
                                            Integer d_grade, Integer pageIndex, Integer pageSize) {
        PageInfo<Dormitory> pi = new PageInfo<Dormitory>(); // 创建分页信息对象
        pi.setPageIndex(pageIndex); // 设置当前页码
        pi.setPageSize(pageSize); // 设置每页显示条数

        // 获取总条数
        Integer totalCount = dormitoryDao.totalCount2(g_id, d_id, d_dormbuilding, d_grade);
        if (totalCount > 0) { // 如果总条数大于0
            pi.setTotalCount(totalCount); // 设置总条数

            // 计算当前页开始的位置并获取宿舍信息列表
            List<Dormitory> dormitoryList = dormitoryDao.getDormitoryList(g_id, d_id, d_dormbuilding, d_grade,
                    (pi.getPageIndex() - 1) * pi.getPageSize(), pi.getPageSize());
            pi.setList(dormitoryList); // 将宿舍信息列表设置到分页信息中
        }
        return pi; // 返回分页信息
    }

    // 获取所有宿舍信息
    @Override
    public List<Dormitory> getAll() {
        List<Dormitory> dormitoryList = dormitoryDao.getAll(); // 调用Data Access Object获取所有宿舍信息
        return dormitoryList; // 返回宿舍信息列表
    }

    // 通过id删除宿舍信息
    @Override
    public int deleteDormitory(Integer d_id) {
        return dormitoryDao.deleteDormitory(d_id); // 调用DAO删除指定id的宿舍信息
    }

    // 添加宿舍信息
    @Override
    public int addDormitory(Dormitory dormitory) {
        return dormitoryDao.addDormitory(dormitory); // 调用DAO添加新的宿舍信息
    }

    // 修改宿舍信息
    @Override
    public int updateDormitory(Dormitory dormitory) {
        return dormitoryDao.updateDormitory(dormitory); // 调用DAO修改宿舍信息
    }

    // 根据id查找宿舍信息
    @Override
    public Dormitory findDormitoryById(Integer d_id) {
        Dormitory d = dormitoryDao.findDormitoryById(d_id); // 调用DAO根据id查找宿舍
        return d; // 返回宿舍信息
    }
}
